{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "39da60db",
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7882c316",
   "metadata": {},
   "source": [
    "#### 当x为多维向量时，绘制多维向量的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "91d26f7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制正太分布的直方图\n",
    "plt.hist(np.random.randn(10000))\n",
    "plt.title('Example 1')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "00e81bbe",
   "metadata": {},
   "source": [
    "#### 当 bins 传入整数时，会分为 bins 数量的等宽桶"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ecd29df5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.random.randn(10000), bins=20)\n",
    "plt.title(\"Example 3\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fab6a1ca",
   "metadata": {},
   "source": [
    "#### 当 bins 传入序列时，会视作每个桶的边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "46df6ecb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.random.randn(10000), bins=[-3, -2, 0, 0.3, 3])\n",
    "plt.title(\"Example 4\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba5762b2",
   "metadata": {},
   "source": [
    "#### 当传入字符串时，例如 “fd”"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "67b81438",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.random.randn(10000), bins=\"fd\")\n",
    "plt.title(\"Example 5\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "25e9da5c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x432 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "# some random data\n",
    "x = np.random.randn(1000)\n",
    "y = np.random.randn(1000)\n",
    "\n",
    "\n",
    "def scatter_hist(x, y, ax, ax_histx, ax_histy):\n",
    "    # no labels\n",
    "    ax_histx.tick_params(axis=\"x\", labelbottom=False)\n",
    "    ax_histy.tick_params(axis=\"y\", labelleft=False)\n",
    "\n",
    "    # the scatter plot:\n",
    "    ax.scatter(x, y)\n",
    "\n",
    "    # now determine nice limits by hand:\n",
    "    binwidth = 0.25\n",
    "    xymax = max(np.max(np.abs(x)), np.max(np.abs(y)))\n",
    "    lim = (int(xymax/binwidth) + 1) * binwidth\n",
    "\n",
    "    bins = np.arange(-lim, lim + binwidth, binwidth)\n",
    "    ax_histx.hist(x, bins=bins)\n",
    "    ax_histy.hist(y, bins=bins, orientation='horizontal')\n",
    "\n",
    "#################################################\n",
    "\n",
    "# Start with a square Figure.\n",
    "fig = plt.figure(figsize=(6, 6))\n",
    "# Add a gridspec with two rows and two columns and a ratio of 1 to 4 between\n",
    "# the size of the marginal axes and the main axes in both directions.\n",
    "# Also adjust the subplot parameters for a square plot.\n",
    "gs = fig.add_gridspec(2, 2,  width_ratios=(4, 1), height_ratios=(1, 4),\n",
    "                      left=0.1, right=0.9, bottom=0.1, top=0.9,\n",
    "                      wspace=0.05, hspace=0.05)\n",
    "# Create the Axes.\n",
    "ax = fig.add_subplot(gs[1, 0])\n",
    "ax_histx = fig.add_subplot(gs[0, 0], sharex=ax)\n",
    "ax_histy = fig.add_subplot(gs[1, 1], sharey=ax)\n",
    "# Draw the scatter plot and marginals.\n",
    "scatter_hist(x, y, ax, ax_histx, ax_histy)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "daf3f325",
   "metadata": {},
   "source": [
    "#### Hatch-filled histograms （Hatch-filled直方图）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "567ca4fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "import itertools\n",
    "from functools import partial\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.ticker as mticker\n",
    "from cycler import cycler\n",
    "\n",
    "\n",
    "def filled_hist(ax, edges, values, bottoms=None, orientation='v',\n",
    "                **kwargs):\n",
    "    \"\"\"\n",
    "    Draw a histogram as a stepped patch.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    ax : Axes\n",
    "        The axes to plot to\n",
    "\n",
    "    edges : array\n",
    "        A length n+1 array giving the left edges of each bin and the\n",
    "        right edge of the last bin.\n",
    "\n",
    "    values : array\n",
    "        A length n array of bin counts or values\n",
    "\n",
    "    bottoms : float or array, optional\n",
    "        A length n array of the bottom of the bars.  If None, zero is used.\n",
    "\n",
    "    orientation : {'v', 'h'}\n",
    "       Orientation of the histogram.  'v' (default) has\n",
    "       the bars increasing in the positive y-direction.\n",
    "\n",
    "    **kwargs\n",
    "        Extra keyword arguments are passed through to `.fill_between`.\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    ret : PolyCollection\n",
    "        Artist added to the Axes\n",
    "    \"\"\"\n",
    "    print(orientation)\n",
    "    if orientation not in 'hv':\n",
    "        raise ValueError(f\"orientation must be in {{'h', 'v'}} \"\n",
    "                         f\"not {orientation}\")\n",
    "\n",
    "    kwargs.setdefault('step', 'post')\n",
    "    kwargs.setdefault('alpha', 0.7)\n",
    "    edges = np.asarray(edges)\n",
    "    values = np.asarray(values)\n",
    "    if len(edges) - 1 != len(values):\n",
    "        raise ValueError(f'Must provide one more bin edge than value not: '\n",
    "                         f'{len(edges)=} {len(values)=}')\n",
    "\n",
    "    if bottoms is None:\n",
    "        bottoms = 0\n",
    "    bottoms = np.broadcast_to(bottoms, values.shape)\n",
    "\n",
    "    values = np.append(values, values[-1])\n",
    "    bottoms = np.append(bottoms, bottoms[-1])\n",
    "    if orientation == 'h':\n",
    "        return ax.fill_betweenx(edges, values, bottoms,\n",
    "                                **kwargs)\n",
    "    elif orientation == 'v':\n",
    "        return ax.fill_between(edges, values, bottoms,\n",
    "                               **kwargs)\n",
    "    else:\n",
    "        raise AssertionError(\"you should never be here\")\n",
    "\n",
    "\n",
    "def stack_hist(ax, stacked_data, sty_cycle, bottoms=None,\n",
    "               hist_func=None, labels=None,\n",
    "               plot_func=None, plot_kwargs=None):\n",
    "    \"\"\"\n",
    "    Parameters\n",
    "    ----------\n",
    "    ax : axes.Axes\n",
    "        The axes to add artists too\n",
    "\n",
    "    stacked_data : array or Mapping\n",
    "        A (M, N) shaped array.  The first dimension will be iterated over to\n",
    "        compute histograms row-wise\n",
    "\n",
    "    sty_cycle : Cycler or operable of dict\n",
    "        Style to apply to each set\n",
    "\n",
    "    bottoms : array, default: 0\n",
    "        The initial positions of the bottoms.\n",
    "\n",
    "    hist_func : callable, optional\n",
    "        Must have signature `bin_vals, bin_edges = f(data)`.\n",
    "        `bin_edges` expected to be one longer than `bin_vals`\n",
    "\n",
    "    labels : list of str, optional\n",
    "        The label for each set.\n",
    "\n",
    "        If not given and stacked data is an array defaults to 'default set {n}'\n",
    "\n",
    "        If *stacked_data* is a mapping, and *labels* is None, default to the\n",
    "        keys.\n",
    "\n",
    "        If *stacked_data* is a mapping and *labels* is given then only the\n",
    "        columns listed will be plotted.\n",
    "\n",
    "    plot_func : callable, optional\n",
    "        Function to call to draw the histogram must have signature:\n",
    "\n",
    "          ret = plot_func(ax, edges, top, bottoms=bottoms,\n",
    "                          label=label, **kwargs)\n",
    "\n",
    "    plot_kwargs : dict, optional\n",
    "        Any extra keyword arguments to pass through to the plotting function.\n",
    "        This will be the same for all calls to the plotting function and will\n",
    "        override the values in *sty_cycle*.\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    arts : dict\n",
    "        Dictionary of artists keyed on their labels\n",
    "    \"\"\"\n",
    "    # deal with default binning function\n",
    "    if hist_func is None:\n",
    "        hist_func = np.histogram\n",
    "\n",
    "    # deal with default plotting function\n",
    "    if plot_func is None:\n",
    "        plot_func = filled_hist\n",
    "\n",
    "    # deal with default\n",
    "    if plot_kwargs is None:\n",
    "        plot_kwargs = {}\n",
    "    print(plot_kwargs)\n",
    "    try:\n",
    "        l_keys = stacked_data.keys()\n",
    "        label_data = True\n",
    "        if labels is None:\n",
    "            labels = l_keys\n",
    "\n",
    "    except AttributeError:\n",
    "        label_data = False\n",
    "        if labels is None:\n",
    "            labels = itertools.repeat(None)\n",
    "\n",
    "    if label_data:\n",
    "        loop_iter = enumerate((stacked_data[lab], lab, s)\n",
    "                              for lab, s in zip(labels, sty_cycle))\n",
    "    else:\n",
    "        loop_iter = enumerate(zip(stacked_data, labels, sty_cycle))\n",
    "\n",
    "    arts = {}\n",
    "    for j, (data, label, sty) in loop_iter:\n",
    "        if label is None:\n",
    "            label = f'dflt set {j}'\n",
    "        label = sty.pop('label', label)\n",
    "        vals, edges = hist_func(data)\n",
    "        if bottoms is None:\n",
    "            bottoms = np.zeros_like(vals)\n",
    "        top = bottoms + vals\n",
    "        print(sty)\n",
    "        sty.update(plot_kwargs)\n",
    "        print(sty)\n",
    "        ret = plot_func(ax, edges, top, bottoms=bottoms,\n",
    "                        label=label, **sty)\n",
    "        bottoms = top\n",
    "        arts[label] = ret\n",
    "    ax.legend(fontsize=10)\n",
    "    return arts\n",
    "\n",
    "\n",
    "# set up histogram function to fixed bins\n",
    "edges = np.linspace(-3, 3, 20, endpoint=True)\n",
    "hist_func = partial(np.histogram, bins=edges)\n",
    "\n",
    "# set up style cycles\n",
    "color_cycle = cycler(facecolor=plt.rcParams['axes.prop_cycle'][:4])\n",
    "label_cycle = cycler(label=[f'set {n}' for n in range(4)])\n",
    "hatch_cycle = cycler(hatch=['/', '*', '+', '|'])\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "stack_data = np.random.randn(4, 12250)\n",
    "dict_data = dict(zip((c['label'] for c in label_cycle), stack_data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3b5e3c62",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{}\n",
      "{'facecolor': '#1f77b4', 'hatch': '/'}\n",
      "{'facecolor': '#1f77b4', 'hatch': '/'}\n",
      "v\n",
      "{'facecolor': '#ff7f0e', 'hatch': '*'}\n",
      "{'facecolor': '#ff7f0e', 'hatch': '*'}\n",
      "v\n",
      "{'facecolor': '#2ca02c', 'hatch': '+'}\n",
      "{'facecolor': '#2ca02c', 'hatch': '+'}\n",
      "v\n",
      "{'facecolor': '#d62728', 'hatch': '|'}\n",
      "{'facecolor': '#d62728', 'hatch': '|'}\n",
      "v\n",
      "{'edgecolor': 'w', 'orientation': 'h'}\n",
      "{'facecolor': '#1f77b4'}\n",
      "{'facecolor': '#1f77b4', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n",
      "{'facecolor': '#ff7f0e'}\n",
      "{'facecolor': '#ff7f0e', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n",
      "{'facecolor': '#2ca02c'}\n",
      "{'facecolor': '#2ca02c', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n",
      "{'facecolor': '#d62728'}\n",
      "{'facecolor': '#d62728', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'x')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAE8CAYAAABQLQCwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABLuklEQVR4nO3de3xU1b3//9cnF0jCRbAGCaLA6RGqoEQIHPxyRFEB70AtFRULlVOKR1G0cAjN0UaFFgoiIi3WHyrQFsVSRVG0KgWhikKCniOiKFaslKgoRy4mgSSs3x+zEyfJJJkkc828n49HHplZe83anxk2O59Z+/Ix5xwiIiIikjiSoh2AiIiIiESWEkARERGRBKMEUERERCTBKAEUERERSTBKAEVEREQSTEq0AwiXk046yXXv3j3aYYhIDCssLPzSOZcZ7TiaQvs4EQlGXfu5FpsAdu/enYKCgmiHISIxzMw+iXYMTaV9nIgEo679nA4Bi4iIiCQYJYAiIiIiCUYJoIiIiEiCabHnAIpI/crKyti7dy+lpaXRDiXs0tLS6Nq1K6mpqdEORUTqkEj7pHBo7H5OCaBIgtq7dy/t2rWje/fumFm0wwkb5xxfffUVe/fupUePHtEOR0TqkCj7pHBoyn5Oh4BFElRpaSnf+c53WvyO1sz4zne+o1kFkRiXKPukcGjKfk4JoEgCS5QdbaK8T5F4p/+rTdfYz04JoIiIiEiC0TmAIgLAxGXbgu5b9H4hG34zk6E3/4qs7/UP2OeRCQNCFRoAy5YtY/jw4XTp0qXWsgMHDnDNNdewZ88eunfvzpNPPknHjh1Duv5wMrM0YBPQGt9+ebVz7hfRjUokur4uPkZpWUXIxktLTaZDRqug++fn59O2bVumTZvG+++/z9ixYzEzVq9eTd++fTly5Ah79uzh9ddf57rrrmt2fAsXLmTSpElkZGTUWvbxxx8zduxYDhw4QL9+/fj9739Pq1bBv5dAlACKSKMEk/yFw7Jly+jTp0/ABHDOnDlcdNFF5ObmMmfOHObMmcPcuXMjFlsIHAUudM4dMbNU4G9m9oJz7o1oByYSLaVlFeQ9vSNk480e3afJr12zZg0jR47k7rvvrta+Z88eVq5cGbIEcNy4cQETwBkzZnD77bczduxYJk+ezCOPPMJNN93UrPWF9RCwmXUws9Vm9r6ZvWdm55rZiWb2spl96P3u6Nd/ppntNrNdZjbCr72/mb3jLVtkOklAJCpCmfx98803XH755fTt25c+ffqwatUqAAoLCzn//PPp378/I0aMoKioiNWrV1NQUMD1119PdnY2JSUl1cZ65plnGD9+PADjx49nzZo1zYot0pzPEe9pqvfjohiSSEKaPXs2vXr14uKLL2bXrl0ArFu3joULF7J06VKGDh1arX9ubi6bN28mOzub+++/v9qyoqIihgwZQnZ2Nn369GHz5s0AvPTSS5x77rn069ePMWPGcOTIERYtWsS+ffsYOnRorXU45/jrX//KD37wAyB0+7hwzwA+ALzonPuBmbUCMoCfA+udc3PMLBfIBWaY2ZnAWKA30AV4xcx6OucqgCXAJOANYB1wCfBCmGOXOPXp5OrfihYU+A5t3pET+JDkqQ8tCXtMLUGoZ/5efPFFunTpwvPPPw/AwYMHKSsrY8qUKTzzzDNkZmayatUq8vLyePTRR1m8eDHz588nJyen1liff/45WVlZAGRlZfHFF180O75IM7NkoBD4V+A3zrk3A/SZhG9fyGmnndao8Q+VlJF+/AglSY7WRyElKYXk9u1DELlIy1BYWMgTTzzBW2+9RXl5Of369aN///5cdtllTJ48uepwsL85c+Ywf/58nnvuuVrjrVy5khEjRpCXl0dFRQXFxcV8+eWXzJo1i1deeYU2bdowd+5cFixYwF133cWCBQvYsGEDJ510UrVxvvrqKzp06EBKii9l69q1K//85z+b/X7DlgCaWXtgCDABwDl3DDhmZiOBC7xuy4GNwAxgJPCEc+4o8LGZ7QYGmtkeoL1zbos37gpgFEoARSImHId9zzrrLKZNm8aMGTO44oorOO+889ixYwc7duxg2LBhAFRUVFQldi2d92U328w6AE+bWR/n3I4afR4GHgbIyclp1Axh8bFy0o9/Q0kKpBbD8aRUJYAifjZv3szo0aOrDsFeddVVzRpvwIAB3HjjjZSVlTFq1Ciys7N59dVX2blzJ4MHDwbg2LFjnHvuufWO41zt/+qhOBAazhnAfwH2A4+ZWV9832xvA052zhUBOOeKzKyT1/8UfDN8lfZ6bWXe45rtIhIB4Trnr2fPnhQWFrJu3TpmzpzJ8OHDGT16NL1792bLli2NGuvkk0+mqKiIrKwsioqK6NSpU8MvilHOua/NbCO+Ix2hOwFK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",
      "text/plain": [
       "<Figure size 648x324 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Work with plain arrays\n",
    "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 4.5), tight_layout=True)\n",
    "arts = stack_hist(ax1, stack_data, color_cycle + label_cycle + hatch_cycle,\n",
    "                  hist_func=hist_func)\n",
    "\n",
    "arts = stack_hist(ax2, stack_data, color_cycle,\n",
    "                  hist_func=hist_func,\n",
    "                  plot_kwargs=dict(edgecolor='w', orientation='h'))\n",
    "ax1.set_ylabel('counts')\n",
    "ax1.set_xlabel('x')\n",
    "ax2.set_xlabel('counts')\n",
    "ax2.set_ylabel('x')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "26b84319",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
